Registry 是 Docker 镜像的 local 存储管理服务, Registry UI 是对 Registry 进行图形化展示的页面工具.
Registry 除了使用界面访问之外, 还支持 CrudAPI 访问: Registry API
安装 Registry 和 Registry UI
0. 规划服务器
服务器: xxx.xxx.85.102
域名: docker-hub.xxx.com
证书文件: docker-hub.xxx.com.pem 和 docker-hub.xxx.com.key
端口: Registry 默认端口 5000, Registry UI 使用 18080 映射到默认的 80 上.
1. 生成用户名密码
htpasswd -Bbn username password >> ./auth/htpasswd
2. 申请证书
申请免费的 TLS 证书, 将证书 docker-hub.xxx.com.pem 和 docker-hub.xxx.com.key 放到 ./certs 文件夹下.
将证书对应域名 docker-hub.xxx.com 解析到服务器 xxx.xxx.85.102.
3. 修改 Registry 配置文件
./conf/config.yml 文件. Access-Control-Allow-Origin 数组内只支持填写一个内容, 写 http://docker-hub.xxx.com:18080. 其中协议为 http, 域名为 docker-hub.xxx.com, 端口是 Registry UI 端口 18080.
4. 修改 Compose 配置文件
REGISTRY_HTTP_TLS_CERTIFICATE 为 pem 证书文件, REGISTRY_HTTP_TLS_KEY 为 key 证书文件.
关于跨域问题的解决
docker-compose.yml 中的 REGISTRY_URL: https://docker-hub:5000 在 networks 在同一个网络下时, 会自动更改请求头信息
./conf/config.yml 中的 Access-Control-Allow-Origin: ["http://docker-hub.xxx.com:18080"] 只支持填写一个地址, 不能写 “*“ 和多个地址.
可以仔细阅读 Run the static interface 和 Using CORS 两部分, 再结合我前面总结的两点.